When a software product is being produced, the various parts of the system usually form specific dependencies. For example, one component or code segment may depend on another component, which in turn depends on other code and so on. Developers of software upon which other software depends typically need to be continually aware of how changing their code may affect others.
Modularizing large and otherwise complex systems has become an important issue in the context of software development. When a large system is built in separate and independent modules, it is usually easier to implement changes, run tests and otherwise maintain the software. Because of this, most systems today are being built on at least some basis of modularity. The interdependencies between all of these modules, however, are often not well documented. For example, when the interdependent software has previously been produced as part of the same unit, the interdependencies are usually voluminous and not well understood. In the past, the problems of recognizing interdependencies and capitalizing on this knowledge was a manual process, requiring engineers to analyze code and perform other tedious labor.
In light of the above, what is needed is a system for capturing and utilizing module dependency information, while simultaneously ensuring the integrity and consistency of the system. In addition, it is desirable that this dependency information be obtainable from large existing systems that may not have been built strictly adhering to these concerns. The applicant-inventor has identified these, as well as other shortcomings and needs in the art in coming to conceive the subject matter described in this disclosure.